from typing import Literal
import numpy
import pandas
from ..dataclass.tables import TableData, TableCollection, FieldMetadata
from ..dataclass.terminologies import GeoMaterialProps, Units
from ..geocal.dataResource.loadData import load_corrosion_by_env_type

by_env_table: Any

def evaluation_by_env_type(data: Any, env_type: Literal[Any, Any, Any] = "class1", water_evaluation: bool = True) -> TableCollection:
    """
    根据环境类型评价水土腐蚀性
    
    Parameters
    ----------
    data : pd.DataFrame | TableData
        水化学分析或土化学分析数据，包含以下列：
        - 取样编号 - GeoMaterialProps.SampleNumber - 水和土
        - 地层编号 - GeoMaterialProps.LayerNumber - 土
        - 硫酸盐SO₄²⁻ - GeoMaterialProps.SO42   - 水和土
        - 镁盐Mg²⁺ - GeoMaterialProps.Mg2    - 水和土
        - 铵盐NH₄⁺ - GeoMaterialProps.NH4    - 水
        - 苛性碱OH⁻ - GeoMaterialProps.OH    - 水
        - 总矿化度 - GeoMaterialProps.TotalMineralization  - 水
    
    env_type : Literal["class1", "class2", "class3"]
        环境类型
    
    water_evaluation : bool
        True - 水腐蚀性评价
        False - 土腐蚀性评价
    """
    ...
def concrete_corrosion_by_Cl(data: Any, water_evaluation: bool = True, soil_type: Literal[Any, Any] = "A") -> Any:
    """
    混凝土腐蚀性评价（基于氯离子含量）
    data : pd.DataFrame | TableData
        水化学分析或土化学分析数据，包含以下列：
        - 取样编号 - GeoMaterialProps.SampleNumber - 水和土
        - 氯离子Cl⁻ - GeoMaterialProps.Cl    - 水和土
    
    water_evaluation : bool
        True - 水腐蚀性评价
        False - 土腐蚀性评价
    
    soil_type: Literal["A", "B"]
        土体类型, only avaible when water_evaluation is False.
        A是指地下水位以上的碎石土、砂土，稍湿的粉土，坚硬、硬塑的黏性土;
        B是湿、很湿的粉土，可塑、软塑、流塑的黏性土。
    """
    ...
def concrete_corrosion_by_PH(data: Any, soil_type: Literal[Any, Any] = "A") -> TableCollection:
    """
    混凝土腐蚀性评价（基于PH值）, 仅用于土腐蚀性评价。
    
    Parameters
    ----------
    data : pd.DataFrame | TableData
        土化学分析数据，包含以下列：
        - 取样编号 - GeoMaterialProps.SampleNumber - 土
        - PH值 - GeoMaterialProps.PH    - 土
    
    soil_type: Literal["A", "B"]
        土体类型
        A是指直接临水或强透水层中的地下水，强透水土层
        B是指弱透水层中的地下水，弱透水土层
        强透水层是指碎石土和砂土;弱透水层是指粉土和黏性土
    """
    ...
